Bộ nhớ đệm nhanh Các kiểu bộ nhớ

Bộ xử lý máy tính rất nhanh và liên tục đọc thông tin từ bộ nhớ có nghĩa là nó phải chờ thông tin đến vì thời gian truy cập bộ nhớ chậm hơn tốc độ bộ xử lý. Một bộ nhớ đệm là bộ nhớ rất nhỏ, tạm thời và nhanh, cái mà bộ xử lý sử dụng để lấy thông tin mà nó cần trong một khơảng thời gian ngắn. Có rất nhiều ví dụ xung quanh chúng ta.

VD: Trong một ngôi nhà và những công cụ để trong gara và bạn cần sửa lại tầm hầm. Nó sẽ cần nhiều công cụ như: mũi khoan, bộ vặn đai ốc, cưa, ốc vít... Việc đầu tiên bạn nghĩ tới là đo và cắt các tấm gỗ, bạn chạy ra ngoài gara lấy cái thước đo từ kho lưu trữ, chạy xuống tầm hầm đo gỗ rồi quay trở lại nhà xe. Bỏ cái thước dây và lấy cái cưa sau đó trở lại tầng hầm với cái cưa và cắt gỗ. Bạn quyết định vặn ốc vít nối các mảnh gỗ lại. Bạn chạy lại gara để lấy khoan quay xuống tần hầm, khoan các lỗ để đặt ốc vít trở lại nhà để xe lấy cái vặn ốc, sau đó phát hiện ra là sai kích thước trở lại nhà để xe lấy cái khác và chạy lại. Bạn có làm theo cách này không? Nếu cần một cái vặn ốc có lẽ sẽ cần nhiều kích cỡ khác nhau tại sao không lấy toàn bộ những cái vặn ốc. Tiến thêm một bước tại sao không lấy một gói nhỏ bao gồm các công cụ cần thiết vào tầng hầm. Nó sẽ nhanh hơn rất nhiều. Bạn chỉ cần có bộ nhớ đệm. Một công cụ để dễ dàng truy cập và sử dụng nhanh chóng! Những công cụ mà bạn đang có ít có khả năng hơn để sử dụng vẫn còn được lưu giữ trong một địa điểm đó là đi xa hơn và đòi hỏi nhiều thời gian hơn để truy cập vào.

Đây là tất cả những gì mà bộ nhớ đệm phải làm, nó lưu trữ dữ liệu được truy cập và dữ liệu có thể được truy cập bởi CPU nhanh hơn và gần gũi hơn bộ nhớ. Bộ nhớ cache làm việc trên cùng một nguyên tắc cơ bản như là các ví dụ trước bằng cách sao chép dữ liệu thường xuyên được sử dụng vào bộ nhớ cache hơn là một đòi hỏi quyền truy cập vào bộ nhớ chính, để lấy các dữ liệu.Copy những dữ liệu cần sử dụng vào bộ đệm hơn là truy cập tới bộ nhớ chính để truy xuất dữ liệu. Bộ đệm có thể được tổ chức như cuốn sổ địa chỉ.

Kích cỡ của bộ nhớ cache bộ nhớ có thể khác nhau về độ lớn. Một điển hình của máy tính cá nhân cấp hai (L2) là bộ nhớ cache 256K hoặc 512K. Cấp bậc một (L1) là bộ nhớ cache nhỏ hơn, điển hình là 8K hay 16K. Bộ nhớ cache L1 soáng chung về việc xử lý, trong khi L2 cache soáng chung giữa CPU và bộ nhớ chính. Bộ nhớ cache L1 được, do đó, nhanh hơn bộ nhớ cache L2. Các mối quan hệ giữa L1 và L2 cache có thể được minh họa bằng cách sử dụng của chúng tôi cửa hàng Grocery ví dụ: Nếu các cửa hàng chính là bộ nhớ, bạn có thể xem xét tủ lạnh các L2 cache, và trên thực tế các bàn ăn bộ nhớ cache L1.

Mục đích của vùng đệm là tăng tốc độ truy cập bộ nhớ bằng cách lưu trữ các dữ liệu cần sử dụng với CPU thay vì lưu trong bộ nhớ chính. Dù kích cỡ của bộ nhớ đệm không lớn như bộ nhớ chính nhưng nó nhanh hơn. Bộ nhớ chính được tạo bằng DRAM với thời gian truy cập là 60ns.Còn bộ đệm được tạo bằng SRAM truy cập nhanh hơn DRAM với chu kỳ ngắn hơn (một điển hình của thời gian truy cập bộ nhớ cache là 10ns).

Cache hiện không cần phải quá lớn để thực hiện tốt. Một quy tắc chung của bộ nhớ đệm nhở đủ để cho tổng chi phí trung bình cho mỗi bit, gần đó là của chính bộ nhớ, nhưng đủ lớn để mang lại lợi ích. Vì bộ nhớ nhanh này là hơi đắt tiền, nó không khả thi để sử dụng công nghệ tìm thấy trong bộ nhớ cache bộ nhớ để xây dựng các bộ nhớ chính.

Điều gì làm cho bộ nhớ cache "đặc biệt"? Cache không được truy cập theo địa chỉ mà được truy cập theo nội dung. Vì lý do này, bộ nhớ cache đôi khi được gọi là CAM. Theo hầu hết các chương trình lập bản đồ bộ nhớ cache, bộ nhớ cache mục phải được kiểm tra hoặc tìm kiếm nếu giá trị được yêu cầu được lưu trong bộ nhớ cache. Để đơn giản hóa việc này, quá trình tìm những dữ liệu, lập bản đồ bộ nhớ đệm sử dụng các thuật toán khác nhau.

Ánh xạ bộ nhớ đệm nhanh

Bộ nhớ đệm nhanh lưu trữ những dữ liệu có ích tuy nhiên nó sẽ trở thành vô ích nếu CPU không tìm thấy nó. Khi truy cập vào dữ liệu hoặc các tập lệnh, CPU lần đầu tiên tạo ra một địa chỉ bộ nhớ chính. Nếu dữ liệu đã được sao chép vào bộ nhớ cache, các địa chỉ của dữ liệu trong bộ nhớ cache không giống như là địa chỉ chính của bộ nhớ.Ví dụ: dữ liệu được cấp phát tại địa chỉ trong bộ nhớ chính là 2E3 có thể được cấp phát rất sớm trong bộ nhớ đệm. Làm thế nào CPU tìm ra dữ liệu khi nó đã được sao chép vào bộ nhớ đệm? CPU sử dụng một chương trình ánh xạ "chuyển đổi" các địa chỉ của bộ nhớ chính vào một vị trí bộ nhớ cache.

Việc chuyển đổi đia chỉ được thực hiện bằng cách vào trong các bit trong bộ nhớ địa chỉ chính. Chúng tôi chia các bit ra làm hai phần riêng biệt gọi là các trường. Tùy thuộc vào chương trình ánh xạ, chúng tôi có thể có hai hoặc ba trường. Làm thế nào chúng tôi sử dụng các trường này phụ thuộc vào chương trình ánh xạ đang được sử dụng. Các chương trình ánh xạ xác định nơi mà các dữ liệu được đặt ban đầu khi nó được sao chép vào bộ nhớ cache và cũng có thể cung cấp một phương pháp cho CPU để tìm kiếm trước đó đã sao chép dữ liệu khi tìm kiếm bộ nhớ đệm.

Làm thế nào để chúng ta sử dụng được các trường trong bộ nhớ địa chỉ chính. Một trường trong bộ nhớ địa chỉ chính chỉ ra cho ta thấy cái dữ liệu ở bên trong nếu nó ở trong bộ nhớ cache goi là cache hit nếu không gọi là cache miss. Các khối đệm tham chiếu được kiểm tra nếu nó hợp lệ. Kết thúc nó sẽ đưa ra các bít tương ứng với mỗi khối đệm. Giá trị Bit không nghĩa là khối đệm đó không hợp lệ, và phải truy cập bộ nhớ chính. Bit một có nghĩa là hợp lệ. Sau đó chúng ta so sánh thẻ trong khối đệm tới các thẻ của địa chỉ. Nếu các thẻ giống nhau ta có thể tìm ra khối bộ đệm mong muốn (chúng tôi có một bộ nhớ cache hit). Lúc này chúng ta cần xác định từ mong muốn của khối. Tất cả các chương trình ánh xạ đều yêu cầu trường từ.

Ba chương trình ánh xạ bộ nhớ chính:

  • Cache ánh xạ trực tiếp
Ánh xạ trực tiếp sử dụng tiếp cận module. Bởi vì có nhiều khối bộ nhớ chính hơn bộ nhớ đệm. Cần rõ ràng rằng các khối bộ nhớ chính cấp phát cho bộ nhớ đệm. Ánh xạ trực tiếp khối X của bộ nhớ chính tới khối Y của bộ nhớ đệm, mod N với N là tổng số khối trong bộ nhớ đệm.Cả hai khối '0', '10' đều trỏ tới khối '0' của khối '0' của bộ đệm làm thế nào để phân biệt. Cả hai khối đều được lưu trong bộ đệm và được nhận ra bằng các thẻ được khai báo trước.Để thực hiện ánh xạ trực tiếp các bit đại chỉ bộ nhớ chính được chia làm ba trường. Độ dài của mỗi khối phụ thuộc vào đặc điểm vật lý của bộ nhớ chính và đệm. Trường word hay offset chứa các từ để nhận dạng các khối và chứa số bit tương ứng. Khối '0' chứa word trong bộ nhớ chính và được nhận ra = 00000000.Khi một khối của bộ nhớ chính được copy vào bộ nhớ cache, trường tag chứa cái khối và mã để nhận ra khối này. Tổng cộng có ba trường
  • Bộ nhớ đệm nhanh kết hợp hoàn toàn (Fully Associative Cache)
Bộ nhớ đệm nhanh ánh xạ trực tiếp không đắt như các bộ đệm khác vì kịch bản ánh xạ không đòi hỏi bất kỳ sự tìm kiếm. Khi địa chỉ bộ nhớ chính được chuyển sang bộ nhớ đệm, CPU biết chính xác vị trí để tìm trong bộ đệm bằng cách kiểm tra đơn giản số bit trong các trường. Gần giống cuốn sổ địa chỉ các trang thường có chỉ mục theo alphabetic.Sử dụng ánh xạ tương đối địa chỉ bộ nhớ chính được chia ra làm hai phần: tag, word hình 6.8 trường word chứa ba bit nhưng trường tag là mười một bit. Khi bộ đệm được tìm kiếm, trường tag của bộ nhớ chính sẽ được so sánh với trường tag đúng của bộ đệm. Nếu không đúng ta sẽ có cache miss.Tạo bộ nhớ tương ứng: Bộ đệm tương đối nhanh, phức tạp nhưng nó rất đắt. Mặc dù ánh xạ trức tiếp không đắt nhưng nó rất hạn chế giới hạn bộ đệm sử dụng hỗ trợ chạy 1 chương trình sử dụng khối '0', khối '16' sau đó thực thi các câu lệnh. Bộ nhớ đệm nhanh kết hợp hoàn toàn cho phép một khối từ bộ nhớ chính có thể ở bất cứ đâu. Tuy nhiên nó yêu cầu thẻ lớn được chứa khối thêm vào đó yêu cầu phần cứng để tìm tất cả các khối của tạm thời.
  • Tạo bộ nhớ đệm nhanh tương ứng
Bộ nhớ đệm nhanh tương đối nhanh, phức tạp nhưng nó rất đắt. Mặc dù ánh xạ trức tiếp không đắt nhưng nó rất hạn chế giới hạn bộ đệm sử dụng hỗ trợ chạy một chương trình sử dụng khối '0', khối '16' sau đó thực thi các câu lệnh. Bộ nhớ đệm nhanh kết hợp hoàn toàn cho phép một khối từ bộ nhớ chính có thể ở bất cứ đâu. Tuy nhiên nó yêu cầu thẻ lớn được chứa khối thêm vào đó yêu cầu phần cứng để tìm tất cả các khối của tạm thờiNgoài ra còn chương trình ánh xạ thứ ba là N-way set associative cache map-ping kết hợp của hai phương pháp trên giống ánh xạ trực tiếp sử dụng địa chỉ để ánh xạ tới khối. Khác thay vì ánh xạ tới một khối đơn thì nó ánh xạ tới một tập các khối. Tất cả các khối phải có cùng kích cỡ

Chính sách thay thế

Trong bộ đệm ánh xạ trực tiếp nếu có sự bất đồng giữa các khối đệm mà chỉ có một hành động có thể thực hiện. Khối đã tồn tại trong bộ đệm sẽ bị cho ra ngoài cache để tạo phòng cho khối mới. Tiến trình đó là sự thay thế. Với ánh xạ trực tiếp không cần chính sách thay thế vì việc cấp phát mỗi khối mới là xác định lại. Tuy nhiên với fully associative và tạo bộ đệm tương ứng thì cần có giả thuật thay thế để xác định khối bị loại khỏi cache.

Thời gian truy cập hiệu quả

Hành động phân cấp bộ nhớ được tính bằng thời gian truy cập hiệu quả (EAT).VD: thời gian truy cập cache là 10ns, và bộ nhớ chính là 200ns độ cache hit là 99%.

Công thức tính EAT:

H: cache access hit

AccessC: cache access time

AccessMM: main memory access time

Công thức này có thể mở rộng ra để áp dụng ở bộ nhớ tầng ba, tầng bốn.

Khi nào bộ đệm bị hỏng

Khi có nhiều chương trình được thực thi thì bộ đệm sẽ làm việc rất tốt, tuy nhiên nếu có nhiều chương trình thực thi lỗi được chạy thì bộ đệm bị hỏng và việc phân cấp bộ nhớ rất chậm.

Chính sách ghi bộ đệm

Để xác định khối để thay thế người thiết kề phải quyết định làm gì với những khối bẩn của bộ nhớ đệm hoặc là khối bị sửa. Khi tiến trình ghi tới bộ nhớ chính, dữ liệu có thể ghi vào bộ nhớ đệm Có hai chính sách ghi cơ bản: • Write-through: cập nhật cả bộ nhớ đệm và bộ nhớ chính mỗi lần ghi. Ghi chậm hơn write-back nhưng đảm bảo bộ đệm phù hợp với bộ chính không thuận lợi là phải truy cập tới bộ nhớ chính • Write- back: cập nhật những khối trong bộ nhớ chính khi những khối trong bộ nhớ đệm bị loại khỏi cache. Nhanh hơn write-throught do không tốn thời gian ghi ra bộ nhớ đệm. Không thuận lợi vì dữ liệu bộ đệm và bộ nhớ chính có thể không cùng giá trị khi một tiến trình bị hỏng trước khi ghi tới bộ nhớ chính thực thi xong, dữ liệu ở bộ đệm bị mất.

Tài liệu tham khảo

WikiPedia: Các kiểu bộ nhớ http://computerscience.jbpub.com/ecoa/2e/Null06.pd... http://www.pcguide.com/ref/ram/techDRDRAM-c.html http://www.pcguide.com/ref/ram/techEDO-c.html http://www.pcguide.com/ref/ram/techFPM-c.html http://www.pcguide.com/ref/ram/techSLDRAM-c.html http://www.pcguide.com/ref/video/techMDRAM-c.html http://en.wikipedia.org/wiki/DDR_SDRAM http://en.wikipedia.org/wiki/EPROM http://en.wikipedia.org/wiki/Flash_memory http://en.wikipedia.org/wiki/SDRAM